package com.ly.cloud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.plugins.Page;
import com.ly.cloud.common.mybatisplus.plugins.PageInfo;
import com.ly.cloud.dto.RoleUserDto;
import com.ly.cloud.dto.RoleUserQueryDto;
import com.ly.cloud.dto.RoleUserRelationDto;
import com.ly.cloud.service.RoleManagerService;
import com.ly.cloud.vo.RoleInfoVo;
import com.ly.cloud.vo.RoleUserRelationVo;
import com.ly.cloud.vo.StudentVo;
import com.ly.cloud.vo.TeacherVo;
import com.ly.cloud.vo.UserRoleVo;
import com.ly.cloud.web.utils.WebResponse;

/**
 * Description:角色管理
 * @author luhuacong
 * @date: 2018年12月28日
 */
@RestController
@RequestMapping("/roleMana")
public class RoleManagerController {

	@Autowired
	private RoleManagerService roleManagerService;
	
	/** 
	 * Method Name:  insertRoleInfo
	 * Description:  
	 * 新增角色信息
	 * @param jsbh 角色编号
	 * @param jsmc 角色名称
	 * @param cjr 创建人
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/insertRoleInfo",method=RequestMethod.POST)
	public WebResponse<Boolean> insertRoleInfo(@RequestHeader(required=false,value = "loginUserName") String cjr,
												@RequestParam String jsbh,@RequestParam String jsmc){
		boolean success = roleManagerService.insertRoleInfo(jsbh, jsmc, cjr);
		return new WebResponse<Boolean>().success(success);
	}
	
	/** 
	 * Method Name:  deleteRoleByid
	 * Description:  
	 * 根据编号删除角色信息
	 * @param jsbh 角色编号
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/deleteRoleByid/{jsbh}",method=RequestMethod.POST)
	public WebResponse<Boolean> insertRoleInfo(@PathVariable("jsbh") String jsbh){
		boolean success = roleManagerService.deleteRoleByid(jsbh);
		return new WebResponse<Boolean>().success(success);
	}
	
	/** 
	 * Method Name:  deleteByIdList
	 * Description:  
	 * 批量删除角色信息
	 * @param idList 角色编号集合
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/deleteByIdList",method=RequestMethod.POST)
	public WebResponse<Integer> deleteByIdList(@RequestBody List<String> idList){
		Integer count = roleManagerService.deleteByIdList(idList);
		return new WebResponse<Integer>().success(count);
	}
	
	/** 
	 * Method Name:  updateRoleInfo
	 * Description:  
	 * 修改角色信息
	 * @param jsbh 角色编号
	 * @param jsmc 角色名称
	 * @param cjr 修改人
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/updateRoleInfo",method=RequestMethod.POST)
	public WebResponse<Boolean> updateRoleInfo(@RequestHeader(required=false,value = "loginUserName") String xgr,
												@RequestParam String jsbh,@RequestParam String jsmc){
		boolean success = roleManagerService.updateRoleInfo(jsbh, jsmc, xgr);
		return new WebResponse<Boolean>().success(success);
	}
	
	/** 
	 * Method Name:  distrRoleList
	 * Description:  
	 * 批量给老师或学生添加角色
	 * @param dtoList 封装对象
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 * 
	 * 修改传入参数
	 * @author caihuihai 
	 * @date 2019-01-04
	 */
	@RequestMapping(value="/distrRoleList",method=RequestMethod.POST)
	public WebResponse<Integer> distrRoleToTea(@RequestBody RoleUserDto dto){
		Integer count = roleManagerService.distrRoleList(dto);
		return new WebResponse<Integer>().success(count);
	}
	
	/** 
	 * Description: 查询角色信息
	 * @param page 
	 * @param jsmc 角色名称
	 * @return Page<RoleInfoVo>
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/selectRoleInfo",method=RequestMethod.GET)
	public WebResponse<PageInfo<RoleInfoVo>> selectRoleInfo(@RequestParam int pageNum,@RequestParam int pageSize,@RequestParam(required=false) String jsmc){
		Page<RoleInfoVo> page = roleManagerService.selectRoleInfo(new Page<RoleInfoVo>(pageNum,pageSize),jsmc);
		return new WebResponse<PageInfo<RoleInfoVo>>().success(PageInfo.toPageInfo(page));
	}
	
	/**
	 * Method Name:
	 * selectRoleByJsbh 
	 * Description: 根据角色编号查询用户
	 * @param jsbh 角色编号
	 * @return List<RoleUserRelationVo>
	 * @author LuHuaCong
	 * @date: 2018年12月28日
	 */
	@RequestMapping(value="/selectRoleByJsbh",method=RequestMethod.GET)
	public WebResponse<List<RoleUserRelationVo>> selectRoleByJsbh(@RequestParam String jsbh){
		List<RoleUserRelationVo> voList = roleManagerService.selectRoleByJsbh(jsbh);
		return new WebResponse<List<RoleUserRelationVo>>().success(voList);
	}
	
	
	/**
	 * 根据角色编号查询对应的教职工列表
	 * @param jsbh
	 * @param gh
	 * @param xm
	 * @param dwh
	 * @return
	 * @author caihuihai
	 * @date 2019-01-03
	 */
	@RequestMapping(value="/queryJzgListByJsbh",method=RequestMethod.GET)
	public WebResponse<Page<TeacherVo>> queryJzgListByJsbh(@RequestParam int pageNum,
															@RequestParam int pageSize,
															@RequestParam String jsbh,
															@RequestParam(required=false) String gh,
															@RequestParam(required=false) String xm,
															@RequestParam(required=false) String dwh){
		Page<TeacherVo> list = roleManagerService.queryJzgListByJsbh(new Page<TeacherVo>(pageNum,pageSize),jsbh,gh,xm,dwh);
		return new WebResponse<Page<TeacherVo>>().success(list);
	}
	
	
	/**
	 * 根据角色编号查询对应的学生列表
	 * @param jsbh
	 * @param gh
	 * @param xm
	 * @param dwh
	 * @return
	 * @author caihuihai
	 * @date 2019-01-03
	 */
	@RequestMapping(value="/queryStuListByJsbh",method=RequestMethod.GET)
	public WebResponse<Page<StudentVo>> queryStuListByJsbh(@RequestParam int pageNum,
															@RequestParam int pageSize,
															@RequestParam String jsbh,
															@RequestParam(required=false) String xh,
															@RequestParam(required=false) String xm,
															@RequestParam(required=false) String nj,
															@RequestParam(required=false) String xy,
															@RequestParam(required=false) String zyfx,
															@RequestParam(required=false) String bjid){
		Page<StudentVo> list = roleManagerService.queryStuListByJsbh(new Page<StudentVo>(pageNum,pageSize),jsbh,xh,xm,nj,xy,zyfx,bjid);
		return new WebResponse<Page<StudentVo>>().success(list);
	}
	
}
